package com.first.orange.service;

import com.first.orange.beans.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * Created on 2021/7/5
 * <p>
 * Author: Lcywings
 * <p>
 * Description:个人中心业务接口
 */
public interface PersonService {


    /**
     * @author : Lcywings
     * @date : 2021/7/5 13:25
     * @acl : true
     * @description : 根据用户ID，获取个人中心页-个人资产
     */
    Map<String, Object> getPersonalAssets(Integer userId);

    /**
     * @author : Lcywings
     * @date : 2021/7/5 13:25
     * @acl : true
     * @description : 根据用户ID，获取两笔订单
     */
    List<Orders> getOrders(Integer userId);

    /**
     * @author : Lcywings
     * @date : 2021/7/5 17:05
     * @acl : true
     * @description : 根据货物ID，获取订单中的商品
     */
    Product getProduct(Integer productId);

    /**
     * @author : Lcywings
     * @date : 2021/7/6 16:13
     * @acl : true
     * @description : 修改用户信息
     */
    void updatePerson(UserInformation userInformation);

    /**
     * @author : Lcywings
     * @date : 2021/7/7 10:49
     * @acl : true
     * @description : 修改密码
     */
    void updatePassword(Integer userId, String possword);

    /**
     * @author : Lcywings
     * @date : 2021/7/7 11:11
     * @acl : true
     * @description : 根据id，查询用户登录表
     */
    UserLogin selectUserLogin(Integer userId);

    /**
     * @author : Lcywings
     * @date : 2021/7/7 11:06
     * @acl : true
     * @description : 校验两次密码
     */
    Boolean checkedPassword(String password1, String password2);

    /**
     * @author : Lcywings
     * @date : 2021/7/7 15:30
     * @acl : true
     * @description : 上传图片
     */
    Boolean uploadPic(MultipartFile multipartFile, Integer userId, HttpSession session);


    /**
     * @author : Lcywings
     * @date : 2021/7/8 11:23
     * @acl : true
     * @description : 用户足迹
     */
    List<UserFootprint> queryUserFootByUserId(Integer userId);

    /**
     * @author : Lcywings
     * @date : 2021/7/8 12:06
     * @acl : true
     * @description : 根据商品Id查商品
     */
    Product queryProductByproductId(Integer productId);

    /**
     * @author : Lcywings
     * @date : 2021/7/8 14:34
     * @acl : true
     * @description : 根据用户id和足迹id删足迹
     */
    void deleteFootByuserIdAnd(Integer footPrintId, Integer userId);

    /**
     * @author : Lcywings
     * @date : 2021/7/8 11:23
     * @acl : true
     * @description : 用户收藏
     */
    List<UserCollection> queryUserCollectionByUserId(Integer userId);


    /**
     * @author : Lcywings
     * @date : 2021/7/8 16:44
     * @acl : true
     * @description : 根据用户id和足迹id删收藏
     */
    void deleteCollectionByUserIdAndCollectionId(Integer collectionId, Integer userId);

    /**
     * @author : Lcywings
     * @date : 2021/7/9 11:32
     * @acl : true
     * @description : 获取商品地址
     */
    List<ShopAddress> getShopAddressByUserId(Integer userId);


    /**
     * @author : Lcywings
     * @date : 2021/7/9 12:23
     * @acl : true
     * @description : 删除地址，根据用户和地址id
     */
    void deleteAddrByUserIdAndShopId(Integer shopId, Integer userId);

    /**
     * @author : Lcywings
     * @date : 2021/7/9 16:02
     * @acl : true
     * @description : 新增地址
     */
    void insertShopAddressByUserId(ShopAddress shopAddress);


    /**
     * @author : Lcywings
     * @date : 2021/7/9 16:30
     * @acl : true
     * @description : 设置默认地址
     */
    void setDefShopIdByUserIdAndShopId(Integer defShopId, Integer userId);

    /**
     * @author : Lcywings
     * @date : 2021/7/9 17:22
     * @acl : true
     * @description : 查询所有订单
     */
    List<OrderList> selectOrdersByUserId(Integer userId);

    /**
     * @author : Lcywings
     * @date : 2021/7/10 0:34
     * @acl : true
     * @description :获得订单，根据订单号和用户名
     */
    List<Orders> getOrdersByOrderNumAndUserId(String orderNum, Integer userId);

    /**
     * @author : Lcywings
     * @date : 2021/7/10 2:10
     * @acl : true
     * @description : 删除订单
     */
    void deleteOrderByuserIdAndOrderNum(String orderNum, Integer userId);

    /**
     * @author : Lcywings
     * @date : 2021/7/12 14:45
     * @acl : true
     * @description : 根据UserId获取用户详细信息
     */
    UserInformation queryUserInfoByUserId(Integer userId);

    /**
     * @author : Lcywings
     * @date : 2021/7/12 14:50
     * @acl : true
     * @description : 为新用户添加初始信息
     */
    void insertInitUserByUserId(Integer userId, String phone);

    /**
     * @author : Lcywings
     * @date : 2021/7/12 16:30
     * @acl : true
     * @description : 查询所有评论
     */
    List<Comments> queryCommentsByUserId(Integer userId);

    /**
     * @author : Lcywings
     * @date : 2021/7/12 16:38
     * @acl : true
     * @description : 查询所有商品
     */
    List<Product> queryProductByUserId();
}

